package org.truenewx.tnxjee.service.handler;

import org.truenewx.tnxjee.core.ref.ReferenceCounter;
import org.truenewx.tnxjee.model.entity.Entity;

/**
 * 可计数实体引用的
 *
 * @author jianglei
 */
public interface EntityReferenceCountable {

    /**
     * 计算指定实体对象在当前领域范围内的引用数量
     *
     * @param entity   被引用的实体
     * @param counter  对上述实体的引用计数器，在当前领域范围内的引用数量写入其中
     * @param deleting 是否在删除场景中计数，在删除场景中可能需要先删除部分其它数据
     */
    void countReferences(Entity entity, ReferenceCounter counter, boolean deleting);

}
